<?php
/**
 ***********************************************************************************************************************
 * 通用校验类1
 ***********************************************************************************************************************
 */
namespace artisan;
/**
 * Class validation
 * @package artisan
 */
class validation
{
    /**
     * 验证是否是座机号码
     *
     * @param $phoneNumber
     * @return bool
     */
     public static function isTelephone($phoneNumber)
     {
          $match = '/^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$/';
          if(preg_match($match, $phoneNumber)){
               return TRUE; //是座机号码
          }else{
               return FALSE; //不是座机号码
          }
     }

     /**
      * 验证是否是手机号码
      *
      * @param $phoneNumber
      * @return bool
      */
     public static function isMobilePhone($phoneNumber)
     {
          $match = '/1[3456789]{1}\d{9}$/';
          if(preg_match($match, $phoneNumber)){
               return TRUE; //是手机号码
          }else{
               return FALSE; //不是手机号码
          }
     }

     /**
      * 判断内容中是否含有"[]【】"非法字符，如果含有，则返回FALSE，如果没有，则返回TRUE
      */
     public function checkContentCharacter($content)
     {
          $f = array('[',']','［','］','【','】'); //需要验证字符
          foreach($f as $k=>$v){
               if(stripos($content, $v) !== false){
                    return FALSE;
               }
          }
          return TRUE;
     }

     /**
      * 验证手机号是否正确
      *
      * @param string $mobile
      * @return boolean
      */
     public static function isMobile($mobile)
     {
         if (!is_numeric($mobile)) {
             return false;
         }
         return preg_match('#^13[\d]{9}$|^14[5,7,9]{1}\d{8}$|^15[^4]{1}\d{8}$|^17[0,1,3,5,6,7,8]{1}\d{8}$|^18[\d]{9}$#', $mobile) ? true : false;
     }
     
     /**
      * 验证短信内容是否含链接
      *
      * @param string $mobile
      * @return boolean
      */
     public static function hasLink($text)
     {
         //1.先替换空白字符,以防用户带空格输入:w w w.aaa.com 之类的
         $text=str_replace(' ', '', $text);
         //2.中文符号替换,以防。符号:www。aaa。com 之类的
         $text=str_replace('。', '.', $text);
         //3.字符串转小写,以防大小写混写:hTTP://wWW 之类的
         $text=strtolower($text);
         //$pattern = "(?:(?:ht|f)tps?://)*(?:[a-zA-Z0-9-]+\\.)+(?:com|cn|net|org|info|mil|gov|edu|name|xxx|[a-z]{2}){1}(?::[0-9]+)?(?![a-z])(?:/[a-zA-Z0-9\\^\\.\\{\\}\\(\\)\\[\\]_\\?,'/\\\\+&%\\$:#=~-]*)*";
         $pattern='#((https?|ftp)://(\S*?\.\S*?))([\s)\[\]{},;"\':<]|\.\s|$)#i';
         if(preg_match($pattern, $text)){
             return true;
         } else{
             return false;
         }
     }
     
     /**
      * 验证短信内容是否含链接，更为严格的控制，阻止不带协议名的URL，类似xxx.xx的字符串也认为是链接
      *
      * @param string $mobile
      * @return boolean
      */
     public static function hasLinkStrict($text)
     {
     	$pattern = '/([a-zA-Z0-9]+)\.([a-zA-Z]{2,})/';
     	$pattern_ip = '/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/';
     	if(preg_match($pattern, $text) || preg_match($pattern_ip, $text) ){
     		return true;
     	} else{
     		return false;
     	}
     }
     
     
     /**
     * 替换掉收件或者发件人地址中的特殊字符
     */
    public static function addressReplace($str){
        $result = str_replace(['>','<'], '', $str);
        return $result;
    }
     
}


